package model;


import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;




public class CargarDatosXml {
	ArrayList<Ciudad> ciudades;
	ArrayList<Sospechoso> sospechosos;
	ArrayList<ObjetoRobado> valiosos;
	ArrayList<ObjetoRobado> comunes;
	ArrayList<ObjetoRobado> muyValiosos;
	
	public CargarDatosXml(){
	
	this.ciudades = new ArrayList <Ciudad>();
	this.sospechosos = new ArrayList<Sospechoso>();
	this.valiosos = new ArrayList <ObjetoRobado>();
	this.comunes = new ArrayList <ObjetoRobado>();
	this.muyValiosos = new ArrayList <ObjetoRobado>();
	
	}
	


	
	public Document ObtenerArchivo(String UnNombreArchivo) throws ParserConfigurationException, TransformerException, SAXException, IOException{
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		DocumentBuilder db = dbf.newDocumentBuilder();
		Document doc = db.newDocument();
		File archivo = new File(UnNombreArchivo);
		DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
		doc = dBuilder.parse(archivo);
		doc.getDocumentElement().normalize();
		return doc;
				
	}
	
	
public  ArrayList<Ciudad> levantarTodasLasCiudadesXML(Document doc){
        Element elementoCiudades = (Element)doc.getElementsByTagName("Ciudades").item(0);
        for(int i=0; i< elementoCiudades.getChildNodes().getLength(); i++) {
                Ciudad ciudad = Ciudad.hidratar(elementoCiudades.getChildNodes().item(i));
                this.ciudades.add(ciudad);
        }
        return this.ciudades;
        }
	
	
	public ArrayList<Sospechoso> levantarSospechosXML (Document doc){
		
		Element elementoSospechosos =(Element)doc.getElementsByTagName("Sospechosos").item(0);
		for(int i=0; i< elementoSospechosos.getChildNodes().getLength(); i++) {
            Sospechoso sospechoso = Sospechoso.hidratar(elementoSospechosos.getChildNodes().item(i));
           
            this.sospechosos.add(sospechoso);
          
    }
    return this.sospechosos;
		
} 
	public ArrayList <ObjetoRobado> levantarObjetosComunesXml (Document doc){
		Element elementoObjetosRobados =(Element)doc.getElementsByTagName("ObjetosRobados").item(0);
		for(int i=0; i< elementoObjetosRobados.getChildNodes().getLength(); i++) {
			ObjetoRobado objetoComun =ObjetoRobado.hidratar(elementoObjetosRobados.getChildNodes().item(i));
				if (objetoComun.obtenerNroDeCiudades()==4){
				this.comunes.add(objetoComun);
			
				}
			}
		return this.comunes;
}
	
	public ArrayList <ObjetoRobado> levantarObjetosValiososXml (Document doc){
		Element elementoObjetosRobados =(Element)doc.getElementsByTagName("ObjetosRobados").item(0);
		for(int i=0; i< elementoObjetosRobados.getChildNodes().getLength(); i++) {
		
			ObjetoRobado objetoValioso =ObjetoRobado.hidratar(elementoObjetosRobados.getChildNodes().item(i));
			if(objetoValioso.obtenerNroDeCiudades()==5){
				this.valiosos.add(objetoValioso);}
				
			}
				
			return this.valiosos;
		
	}
	
	
	public ArrayList <ObjetoRobado> levantarObjetosMuyValiososXml (Document doc){
		Element elementoObjetosRobados =(Element)doc.getElementsByTagName("ObjetosRobados").item(0);
		for(int i=0; i< elementoObjetosRobados.getChildNodes().getLength(); i++) {
			ObjetoRobado objetoMuyValioso =ObjetoRobado.hidratar(elementoObjetosRobados.getChildNodes().item(i));
				if(objetoMuyValioso.obtenerNroDeCiudades()==7){
				this.muyValiosos.add(objetoMuyValioso);
				}
				
		}
	return this.muyValiosos;
		}
	}
